#pragma once
#include <mutex>
#include <deque>
struct pos{
	int x, y, ID, fromX, fromY;
};
struct threadingInfo{
	std::mutex* mutex_kbd;
	std::deque<char>* mutex_queue;
	std::mutex* mutex_pos;
	std::deque<pos>* mutex_posUpdate;
};

#include "Player.h"
class Game
{
public:
	
	Game(int players = 2);
	~Game(void);
	void operator()();
	int getPlayer(char c);
private:
	static char Game::controlSets[2][4];
	threadingInfo** playerPipelines;
	std::mutex *mutex_pos;
	std::deque<pos> *mutex_posUpdate;
	Player **p;
	std::deque<char> internalQueue;
};